package com.lsh.netty.time;

import io.netty.buffer.ByteBuf;
import io.netty.buffer.Unpooled;
import io.netty.channel.ChannelHandlerAdapter;
import io.netty.channel.ChannelHandlerContext;

import java.time.LocalDateTime;

/**
 * @author ：LiuShihao
 * @date ：Created in 2021/3/17 12:13 下午
 * @desc ：
 */
public class TimeClientHandler extends ChannelHandlerAdapter {


    private int counter;

    private byte[] req;

    public TimeClientHandler() {
//        byte[] req = ("QUERY TIME ORDER".getBytes() ;
        req = ("QUERY TIME ORDER" + System.getProperty("line.separator")).getBytes();
    }

    @Override
    public void channelActive(ChannelHandlerContext ctx){
        LocalDateTime start = LocalDateTime.now();
        LocalDateTime end = start.plusMinutes(1);
        System.out.println("start："+start +" ; end: "+end);
        ByteBuf message = null;
//        for (int i = 0; i < 100 ; i++) {
//            message = Unpooled.buffer(req.length);
//            message.writeBytes(req);
//            ctx.writeAndFlush(message);
//        }
        LocalDateTime now = start;
        while ( now.isAfter(start) && now.isBefore(end) ){
            message = Unpooled.buffer(req.length);
            message.writeBytes(req);
            now = LocalDateTime.now();
            ctx.writeAndFlush(message);
        }
        System.out.println("当前时间不在时间范围之内");
    }
    @Override
    public void channelRead(ChannelHandlerContext ctx,Object msg) throws Exception{
//        ByteBuf buf = (ByteBuf) msg;
        String body = (String) msg;

//        byte[] req = new byte[buf.readableBytes()];

//        buf.readBytes(req);

//        String body = new String(req, "UTF-8");

        System.out.println("Now is :"+body +" ; the counter is "+ ++counter);



    }

    @Override
    public void exceptionCaught(ChannelHandlerContext ctx, Throwable cause) throws Exception {
        System.out.println("Unexpected exception from downstrean : "+ cause.getMessage());
        ctx.close();
    }

}
